Unity教程|3D无尽跑酷游戏(下)
昨天为大家分享了使用Unity创建3D无尽跑酷游戏的上半部分,介绍了两种类型的跑酷游戏可以共用的一些类,今天将继续分享两种关卡需要单独实现的内容。
请点击[阅读原文]下载示例工程及资源文件,并查看所有代码。
Straight Paths Level中游戏对象的层级结构
所有的路径都是通过预制件(见上图蓝色的WideStraightPath)来复制的,直线型道路的路径要比旋转型道路更宽。
为了节省内存资源,游戏不会在一开始就生成所有路径。实际上,游戏需要生成N+1条路径,N是当前Max所在的路径位置。可以利用一个简单的碰撞器BoxCollider,当Max与它发生碰撞, 则通过PathSpawnCollider脚本生成新路径。在直线型道路的关卡中,新生成的路径位于“NewPathSpawn”坐标,这个坐标就是当前路径的终点。
脚本首先设置了几个公共变量,可以在Unity编辑器中设置。
PositionY:用于将RedBorder放置到正确的Y轴位置。
数组PathSpawnPoints:用于保存下一段路径及边界的生成坐标。在“直线型道路”关卡中,数组内只有一个元素。但“旋转型道路“关卡中,该数组需要3个元素,其中一个是新路径的位置,另外两个是RedBorder障碍物(Max一旦碰撞到它,则游戏失败)。
Path:物体包含路径预制件。
数组DangerousBorder:包含了用于“旋转型道路”关卡的RedBorder预制件,在“直线型道路”关卡中为null。
StuffSpawnPoints:包含所有要被实例化物体的位置(糖果或者障碍物)。
数组Bonus:包含所有的糖果预制件。
数组Obstacles:中包含所有的障碍物预制件。
RandomX:该变量只有在“直线型道路”关卡中才会是true。它会随机在X轴的位置([minX, maxX]之间)生成各类糖果和障碍物,以显得每段路径都不一样。
该脚本仅用于在“直线型道路”关卡中移动Max。Max带有CharacterController组件。如果想了解如何对带有CharacterController组件的游戏对象进行移动控制,请查阅Unity文档。
此外,在Start中设置moveDirection向量,用于帮助Max以给定的速度直线前进。然后为组件的相关变量设置正确的值,并更改游戏状态以开始游戏。
Update方法的最后一部分在Max死亡时调用,即Dead状态。当Max死亡,系统会将AnimationStarted参数设置成false,并提示玩家点击屏幕重新开始游戏。
如果有兴趣可以通过点击[阅读原文]查看更为详细的解释.
Rotated path关卡的层级结构
PathSpawnCollider用作生成下一段路径和RedBorder预制件的触发器。SwipeCollider是唯一允许玩家进行滑动操作的地方。SpawnPoints就是糖果及障碍物的生成点:
NewPathSpawnPoint左边
NewPathSpawnPoint右边
在“旋转型道路”关卡中,当玩家位于路径中途时不允许滑动,只有到达某个特定空间才可以通过滑动让Max转向。可以在场景中放置一个隐形碰撞体Swipe Collider,当Max与Swipe Collider对象进行碰撞时,玩家才能进行滑动动作。
SwipeCollider脚本只用于设置GameManager对象的公共变量,该变量控制Max是否可以左右滑动。
Vision VR/AR 亚洲峰会门票优惠仅剩最后5天。优惠购买从速哦。
VR Master Class 本年度最后一场内容曝光,火热报名中。